

#ifndef UD_DBXLINE_H
#define UD_DBXLINE_H 1

#include "zdbmain.h"
#include "zdbcurve.h"

#pragma pack(push, 8)

class UcGePoint3d;
class UcGeVector3d;

class UcDbXline: public UcDbCurve
{
public:
    UcDbXline();
    ~UcDbXline();
    UCDB_DECLARE_MEMBERS(UcDbXline);
    DBCURVE_METHODS

    Ucad::ErrorStatus getOffsetCurvesGivenPlaneNormal(
        const UcGeVector3d& normal, double offsetDist,
        UcDbVoidPtrArray& offsetCurves) const;
    
    UcGePoint3d  basePoint() const;
    void         setBasePoint(const UcGePoint3d& pt); 

    UcGeVector3d unitDir() const;
    void         setUnitDir(const UcGeVector3d& vec);

    virtual Ucad::ErrorStatus getClassID(CLSID* pClsid) const;
};

inline ZSoft::Boolean UcDbXline::isClosed() const
{
    return ZSoft::kFalse;
}

inline ZSoft::Boolean UcDbXline::isPeriodic() const
{
    return ZSoft::kFalse;
}

inline ZSoft::Boolean UcDbXline::isPlanar() const
{
    return ZSoft::kTrue;
}

inline Ucad::ErrorStatus UcDbXline::getStartParam(double&) const
{
    return Ucad::eNotApplicable;
}

inline Ucad::ErrorStatus UcDbXline::getEndParam(double&) const
{
    
    return Ucad::eNotApplicable;
}

inline Ucad::ErrorStatus UcDbXline::getStartPoint(UcGePoint3d&) const
{
    return Ucad::eNotApplicable;
}

inline Ucad::ErrorStatus UcDbXline::getEndPoint(UcGePoint3d&) const
{
    return Ucad::eNotApplicable;
}

inline Ucad::ErrorStatus UcDbXline::getSpline(UcDbSpline*&) const
{
    return Ucad::eNotApplicable;
}

inline Ucad::ErrorStatus UcDbXline::extend(double newParam)
{
    return Ucad::eNotApplicable;
}

inline Ucad::ErrorStatus UcDbXline::extend(ZSoft::Boolean, const UcGePoint3d&)
{
    return Ucad::eNotApplicable;
}

inline Ucad::ErrorStatus UcDbXline::getArea(double&) const
{
    return Ucad::eNotApplicable;
}

#pragma pack(pop)

#endif

